When problems are identified in the functioning of computer systems, one method used for analysing the problem is diagnostic tracing. Tracing can be performed by programs external to the program under examination or may be performed with the use of in-line trace code. Gathering such diagnostic trace data may have a significant performance cost and can generate relatively large amounts of data in a short time. Systems exist for limiting which elements of code generate diagnostic trace, but such systems introduce the risk that important information will be missing from the trace. Furthermore, diagnostic tracing also tends to be sequential in nature, which can lead to significant amounts of non-relevant data being generated. Analysis of large amounts of trace data, some of which may not be relevant, is problematic and time consuming.